package com.wst.getPropertiesFile;

import com.wst.utils.PropertiesReader;

import java.io.InputStream;

/**
 * @Description: 获取资源目录下文件几种方式比对
 * @Auth: yudong
 * @DateTime: 2021/4/1 14:33
 */
public class ReadResourceFile {

    public static void main(String[] args) {

//        serverPropertiesFile();

        testReadProperties();
    }

    /**
     * 服务器（Tomcat）读取资源文件
     */
    public static void serverPropertiesFile(){
        //方式一：
        InputStream inStream = ReadResourceFile.class.getResourceAsStream("test.properties");
        //方式二：
        //inStream = ReadResourceFile.class.getResourceAsStream("/com/test/demo/config.properties");
        /**
         * 方式三（推荐）：
         * 　a）class.getClassLoader().getResourceAsStream(String name)
         *  默认从classpath中找文件(文件放在resources目录下)，name不能带"/"，
         *  否则会抛空指针。采用相对路径, "/"就相当于当前进程的根目录，即项目根目录；
         *
         *  b）class.getResourceAsStream(String name) 是采用绝对路径，
         *  绝对路径是相对于 classpath 根目录的路径，"/" 就代表着 classpath，所以 name 属性需要前面加上 "/"；
         */
        //1.读取resource根目录下配置文件
        inStream = ReadResourceFile.class.getClassLoader()
                .getResourceAsStream("test.properties");
        //2.读取monitor目录下配置文件
        inStream = ReadResourceFile.class.getClassLoader()
                .getResourceAsStream("monitor/config.properties");
                //.getResourceAsStream("com/test/demo/config.properties");
        System.out.println(inStream);
    }

    public static void testReadProperties(){
        String val1 = PropertiesReader.getProperties("test.properties","product_code");
        System.out.println("val1="+val1);

        String val2 = PropertiesReader.getProperties("monitor/config.properties","product_code");
        System.out.println("val2="+val2);
    }


}
